<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns:u="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:t="http://com.ss.stockmanager/jsf"
	xmlns:p="http://primefaces.org/ui" xmlns="http://www.w3.org/1999/xhtml">

	<body>
	
				<h:panelGrid id="cargaOrdenDeCompra" columns="1" 
						rendered="#{ordenDeCompraController.addEdit}" >
				
					 <p:fieldset legend="Informacion de la Orden de compra" style="margin-bottom:20px">
					 <h:panelGrid id="panel1" columns="6" style="padding-top:5px;padding-bottom:5px;" >
			
						<h:outputText value="Numero orden de compra" rendered="#{!(ordenDeCompraController.ordenDeCompraView.numeroOrdenDeCompra eq null)}"/>
						<p:inputText id="numeroOC" value="#{ordenDeCompraController.ordenDeCompraView.numeroOrdenDeCompra}"
									disabled="true" rendered="#{!(ordenDeCompraController.ordenDeCompraView.numeroOrdenDeCompra eq null)}"
									style="margin-right:25px;" />

						<h:outputText value="Fecha orden de compra" />
						<p:calendar id="fechaOC"
									value="#{ordenDeCompraController.ordenDeCompraView.fechaOrdenDeCompra}" mode="popup"
									showOn="button" locale="es"
									pattern="#{msgs.common_inputDateFormat}"
									readOnlyInputText="false" navigator="true"
									yearRange="c-100:c+50"
									converterMessage="El formato de la fecha es incorrecto"
									disabled="true"
									required="true" style="margin-right:25px;" requiredMessage="Ingrese la fecha de la orden de compra" >
						</p:calendar>

					</h:panelGrid>
					</p:fieldset>
					
				    <p:fieldset legend="Seleccion de proveedor/productos" style="margin-bottom:20px">
				    
					<h:panelGrid id="panel2" columns="1" style="padding-top:5px;padding-bottom:5px;" >
						<h:panelGrid id="cargaInfoLinea" columns="2" style="padding-top:5px;padding-bottom:5px;" >
							<h:outputText value="Proveedor" />
							<p:selectOneMenu id="comboProveedorOC"
											value="#{ordenDeCompraController.ordenDeCompraView.proveedorView.id}"
											valueChangeListener="#{ordenDeCompraController.actualizarListaDeProductos}"
											disabled="#{ordenDeCompraController.disabled or not empty ordenDeCompraController.ordenDeCompraDetalle}"
											style="margin-right:25px;"
											required="true" requiredMessage="El proveedor es obligatorio" >
								<f:ajax execute="@this" />
								<p:ajax event="change" update="comboProductoOC, comboFamilia, comboMarca, infoProducto"/>
								<f:selectItem itemLabel="-- Seleccione --" itemValue="" />
								<f:selectItems value="#{ordenDeCompraController.listaDeProveedores}"
									var="provOC" itemValue="#{provOC.id}" itemLabel="#{provOC.nombre}" />
							</p:selectOneMenu>
							
							<h:outputText value="Familia" />
							<p:selectOneMenu id="comboFamilia"
								value="#{ordenDeCompraController.familiaSeleccionada.id}"
								disabled="#{ordenDeCompraController.disabled or empty ordenDeCompraController.ordenDeCompraView.proveedorView.id}">
								<f:ajax execute="@this" />
								<p:ajax event="change" update="comboProductoOC, infoProducto" listener="#{ordenDeCompraController.actualizarListaDeProductosFamiliaMarca}"/>
								<f:selectItem itemLabel="-- Seleccione --" itemValue="" />
								<f:selectItems value="#{productoController.listaDeFamilia}"
									var="family" itemValue="#{family.id}"
									itemLabel="#{family.descripcion}" />
							</p:selectOneMenu>

							<h:outputText value="Marca" />
							<p:selectOneMenu id="comboMarca"
								value="#{ordenDeCompraController.marcaSeleccionada.id}"
								disabled="#{ordenDeCompraController.disabled or empty ordenDeCompraController.ordenDeCompraView.proveedorView.id}">
								<f:ajax execute="@this" />
									<p:ajax event="change" update="comboProductoOC, infoProducto" listener="#{ordenDeCompraController.actualizarListaDeProductosFamiliaMarca}"/>
								<f:selectItem itemLabel="-- Seleccione --" itemValue="" />
								<f:selectItems value="#{productoController.listaDeMarca}"
									var="trade" itemValue="#{trade.id}"
									itemLabel="#{trade.descripcion}" />
							</p:selectOneMenu>
	
							<h:outputText value="Producto" />
							<p:selectOneMenu id="comboProductoOC"
											value="#{ordenDeCompraController.productoView.id}"
											disabled="#{ordenDeCompraController.disabled or empty ordenDeCompraController.ordenDeCompraView.proveedorView.id}" 
											valueChangeListener="#{ordenDeCompraController.buscarProductoSeleccionadoParaOC}"
											required="true" requiredMessage="El producto es obligatorio"
											filter="true" filterMatchMode="contains">
								<f:ajax execute="@this" />
								<p:ajax event="change" update=":form:messages infoProducto"/>
								<f:selectItem itemLabel="-- Seleccione --" itemValue="" />
								<f:selectItems value="#{ordenDeCompraController.listaDeProductos}"
									var="prodOC" itemValue="#{prodOC.id}" itemLabel="#{prodOC.detalle}" />
							</p:selectOneMenu>

							</h:panelGrid>
						
						<p:outputPanel id="infoProducto" layout="block" >
						
							<h:panelGrid columns="1" 
										rendered="#{not empty ordenDeCompraController.productoCodigoView.codigoProveedor
													and !facesContext.maximumSeverity}" >
							
								<h:panelGrid columns="5" style="padding-top:5px; padding-bottom:5px;" >
									<table class="bottomBorder">
										<tr>
											<th>Codigo producto proveedor</th>
											<th>Codigo Producto</th>
											<th>Precio</th>
											<th>Stock minimo Producto</th>
											<th>Total en Stock</th>
										</tr>
										<tr style="text-align:center;">
											<td style="color:#0101DF;">#{ordenDeCompraController.productoCodigoView.codigoProveedor}</td>
											<td style="color:#0101DF;">#{ordenDeCompraController.productoView.codigoProducto}</td>
											<td style="color:#0101DF;">#{ordenDeCompraController.productoPrecio.precio}</td>
											<td style="color:#0101DF;">#{ordenDeCompraController.productoView.stockMinimo}</td>
											<td style="color:#0101DF;">#{ordenDeCompraController.stockCantidad}</td>
										</tr>
									</table>
									
								</h:panelGrid>

								<h:panelGrid id="total" columns="5" style="padding-top:5px;padding-bottom:5px;" >
								
									<p:commandLink  onclick="PF('imagenDialog').show()" >
										<h:graphicImage value="#{ordenDeCompraController.serverUrl}/archivos/#{ordenDeCompraController.productoView.nombreArchivo}" width="40" height="40" />
									</p:commandLink>
									
									<p:dialog id="imagenDialogID" header="Producto"
										widgetVar="imagenDialog" resizable="false" width="350" modal="true">
										<h:panelGrid id="panelGridImagen" columns="1">
											<h:graphicImage value="#{ordenDeCompraController.serverUrl}/archivos/#{ordenDeCompraController.productoView.nombreArchivo}" width="300" height="300" />
							
											<p:commandButton value="#{msgs.common_cerrar}" type="button"
												actionListener="#{contactoController.cerrar}"
												onclick="PF('imagenDialog').hide()" />
										</h:panelGrid>
									</p:dialog>
									
									<h:outputText value="Total" />
									<p:inputText label="Total" 
												 value="#{ordenDeCompraController.totalCargaProducto}" 
												 disabled="#{ordenDeCompraController.disabled}"
												 required="true" >
									</p:inputText>
									<p:commandButton 	title="Agregar producto a la orden de compra" 
														disabled="#{ordenDeCompraController.disabled}"
														actionListener="#{ordenDeCompraController.addProductToPurchaseOrder}"
														image="ui-icon-add-product-purcahse-order"
														update=":form:panel2 :form:purchaseOrder :form:messages"
														process="@this cargaInfoLinea total" >
									</p:commandButton>
								</h:panelGrid>
							</h:panelGrid>
						</p:outputPanel>
						

					</h:panelGrid>

					</p:fieldset>

					<h:panelGrid id="purchaseOrder" columns="1">
						
						<p:dataTable id="dataTableOC" var="po" rowIndexVar="rowIndex"
							value="#{ordenDeCompraController.ordenDeCompraDetalle}" 
							rendered="#{ordenDeCompraController.addEdit}"
							emptyMessage="No se encontraron registros" >

						    <f:facet name="header">
								DETALLE DE LA ORDEN DE COMPRA
							</f:facet>
	
							<p:column style="width:60px;text-align:center;" rendered="#{!ordenDeCompraController.disabled}">
								<f:facet name="header">
									<h:outputText value="" />
								</f:facet>
								<p:commandButton 	actionListener="#{ordenDeCompraController.eliminarLineaDelDetalle(rowIndex)}"
													value="Borrar"
													update=":form:purchaseOrder :form:messages :form:panel2"
													process="@this dataTableOC" >
								</p:commandButton>
							</p:column>

							<p:column headerText="Nro Linea" style="width:40px;text-align:center;">
								#{rowIndex+1}
							</p:column>

							<p:column style="width:100px;">
								<f:facet name="header">
									<h:outputText value="Codigo Producto Proveedor" />
								</f:facet>
								<div align="right"><h:outputText value="#{po.codigoProductoProveedor}" /></div>
							</p:column>
							<p:column style="width:100px;">
								<f:facet name="header">
									<h:outputText value="Codigo Producto" />
								</f:facet>
								<div align="right"><h:outputText value="#{po.productoView.codigoProducto}" /></div>
							</p:column>
							<p:column>
								<f:facet name="header">
									<h:outputText value="Descripcion" />
								</f:facet>
								<h:outputText value="#{po.productoView.detalle}" />
							</p:column>
							<p:column style="width:100px;">
								<f:facet name="header">
									<h:outputText value="Precio" style="text-align:center;" />
								</f:facet>
								<div align="right">
								<h:outputText value="#{po.precio}">
									<f:convertNumber pattern="$###,###.00" />
								</h:outputText>
								</div>
							</p:column>
							<p:column style="width:100px;">
								<f:facet name="header">
									<h:outputText value="Cantidad" />
								</f:facet>
									<p:inputText	label="Total"
													id="countInput" 
													value="#{po.cantidad}" 
													disabled="#{ordenDeCompraController.disabled}"
													style="width:95%;text-align:right;"
													required="true" >
											<p:ajax event="change" update=":form:purchaseOrder"/>
											<f:convertNumber pattern="###,###.00" />
									</p:inputText>
							</p:column>

							<p:column style="width:100px;">
								<f:facet name="header">
									<h:outputText value="Total" />
								</f:facet>
								<div align="right">
								<h:outputText value="#{ordenDeCompraController.totalLinePurchaseOrder(po.precio, po.cantidad)}" >
									<f:convertNumber pattern="$###,###.00" />
								</h:outputText>
								</div>
							</p:column>

							<p:columnGroup type="footer">
							  <p:row>
								<p:column colspan="5" footerText="Total:" style="text-align:right;color:#B40431;" rendered="#{ordenDeCompraController.disabled}" />
								<p:column colspan="6" footerText="Total:" style="text-align:right;color:#B40431;" rendered="#{!ordenDeCompraController.disabled}" />
								<p:column style="text-align:right;color:#B40431;">
									<f:facet name="footer">
										<h:outputText value="#{ordenDeCompraController.granTotalCantidad}">
											<f:convertNumber pattern="###,###.00" />
										</h:outputText>
									</f:facet>	
								</p:column>
								<p:column style="text-align:right;color:#B40431;">
									<f:facet name="footer">
										<h:outputText value="#{ordenDeCompraController.granTotalPrecio}">
											<f:convertNumber pattern="$###,###.00" />
										</h:outputText>
									</f:facet>	
								</p:column>
							  </p:row>
							</p:columnGroup>

							</p:dataTable>

					</h:panelGrid>

					<h:panelGrid columns="2">
						<p:commandButton value="#{ordenDeCompraController.labelButtonAddUpdate}"
										 disabled="#{ordenDeCompraController.disabled}"
										 actionListener="#{ordenDeCompraController.save}"
										 process="@this panel1 purchaseOrder"
										 update=":form">
						</p:commandButton>
						<p:commandButton value="#{msgs.common_volver}"
							actionListener="#{ordenDeCompraController.cancel}" immediate="true"
							update=":form">
						</p:commandButton>
					</h:panelGrid>

				</h:panelGrid>

</body>
</html>

